In a project network, a dependency is a link amongst a project's terminal elements.
There are four kinds of dependencies with respect to ordering terminal elements (in order of decreasing frequency of use):
Finish-to-start is considered a "natural dependency" whereas all the others are constraints imposed by the scheduler to reflect resource constraints or preferential dependencies. SF is rarely used, and should generally be avoided.
There are three kinds of dependencies with respect to the reason for the existence of dependency:
Early critical path-derived schedules often reflected only on causal (logical) or discretionary (preferential) dependencies because the assumption was that resources would be available or could be made available. Since at least the mid-1980s, competent project managers and schedulers have recognized that schedules must be based on resource availability. The critical chain method necessitates taking into account resource constraint-derived dependencies as well.
In addition, these dependencies can be modified by leads, and lags. For example: When building two walls from a novel design, one might start the second wall 2 days after the first so that the second team can learn from the first. This is an example of a lag in a Start-Start relationship.
It may also be useful to specify lead time when tasks are performed in parallel in a Finish-Finish relationship. For example: The work for 'Document A' should finish 5 days before the work for 'Document B' so that the reviewers have time to read each individually. Although Document A and Document B may take different times to write, they will be planned to finish 5 days apart.